package org.example.sys_weapons;

import org.example.Main;
import org.example.Utils.ConsoleColorOutput;
import org.example.Utils.ConsoleStyle;
import org.example.sys_weapons.pojo.EntitiesDto;

import java.util.Random;

public class EternalReincarnation {


    // 下一个火种
    public static void nextFire() {
        // 随机数
        int random = (int) (Math.random() * 100);
        // 遍历实体
        for (EntitiesDto entity : World.Entities) {
            // 如果随机数小于实体随机数
            if (random < entity.getRandom()) {

                // 实体变为半神
                World.GoldenDescendant.add(entity.becomeGoldenDescendant());

                // 从实体列表中移除
                World.Entities.remove(entity);

                // 跳出循环
                break;
            }
        }

        // 通知 破坏实体 开始获取火种
        NeiKos.nextFire();

    }

    // 开启 方法
    public static void open() {
        World.init();

        // 实现逻辑
        while (!World.Entities.isEmpty() || !World.GoldenDescendant.isEmpty()) {
            World.round += new Random().nextLong(200) + 10;
            nextFire();
        }
        end();
    }

    /**
     * 结束统计
     * 轮回次数
     * 第33550336次轮回结束
     * 卡厄斯兰纳累计火种912枚准备开始下一次演算
     * 警告：电信号序列异常.处理中处理失败，系统回退
     */
    public static void end() {
        ConsoleColorOutput.topLineOutput(ConsoleStyle.YELLOW,"实验归档");
        ConsoleColorOutput.output(ConsoleStyle.YELLOW,"> 第"+ Main.round +"次轮回结束");
        ConsoleColorOutput.output(ConsoleStyle.YELLOW,"> 卡厄斯兰纳累计火种"+NeiKos.fire+"枚");
        ConsoleColorOutput.output(ConsoleStyle.YELLOW,"> 准备开始下一次演算");
        ConsoleColorOutput.outputDividingLine();

        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
    }
}
